package com.swak.corpwx.kf.msg;

import java.util.List;

import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * The type Wx cp kf menu msg.
 *
 * @author leiin  created on  2022/1/26 6:33 下午
 */
@NoArgsConstructor
@Data
public class CpKfMenuMsg {

	/**
	 * 参数：head_content
	 * 是否必须：否
	 * 类型：string
	 * 说明：起始文本 不多于1024字节
	 */
	private String head_content;

	private List<CpKfMenuItem> list;

	/**
	 * 参数：tail_content
	 * 是否必须：否
	 * 类型：string
	 * 说明：结束文本 不多于1024字节
	 */
	private String tail_content;

	/**
	 * The type Wx cp kf menu item.
	 */
	@NoArgsConstructor
	@Data
	public static class CpKfMenuItem {
		/**
		 * 参数：type
		 * 是否必须：是
		 * 类型：string
		 * 说明：菜单类型。click-回复菜单 view-超链接菜单 miniprogram-小程序菜单
		 */
		private String type;

		/**
		 * type为click的菜单项
		 */
		private MenuClick click;
		/**
		 * type为view的菜单项
		 */
		private MenuView view;
		/**
		 * type为miniprogram的菜单项
		 */
		private MiniProgram miniprogram;
		/**
		 * type为text的菜单项
		 */
		private MenuText text;
	}

	/**
	 * The type Menu click.
	 */
	@Getter
	@Setter
	public static class MenuClick {

		/**
		 * <pre>
		 *   是否必须：否
		 *   说明：菜单ID。不少于1字节 不多于128字节
		 * </pre>
		 */
		private String id;
		/**
		 * <pre>
		 *   是否必须：是
		 *   说明：菜单显示内容。不少于1字节 不多于128字节
		 * </pre>
		 */
		private String content;
	}

	/**
	 * The type Menu view.
	 */
	@Getter
	@Setter
	public static class MenuView {
		/**
		 * <pre>
		 *   是否必须：是
		 *   说明：点击后跳转的链接。不少于1字节 不多于2048字节
		 * </pre>
		 */
		private String url;
		/**
		 * <pre>
		 *   是否必须：是
		 *   说明：菜单显示内容。不少于1字节 不多于1024字节
		 * </pre>
		 */
		private String content;
	}

	/**
	 * The type Mini program.
	 */
	@Getter
	@Setter
	public static class MiniProgram {
		/**
		 * <pre>
		 *   是否必须：是
		 *   说明：小程序appid。
		 * </pre>
		 */
		private String appid;
		/**
		 * <pre>
		 *   点击后进入的小程序页面。
		 * </pre>
		 */
		private String pagepath;
		/**
		 * <pre>
		 *   菜单显示内容。不多于1024字节
		 * </pre>
		 */
		private String content;
	}

	/**
	 * 
	 * The type Menu text.
	 *
	 */
	@Getter
	@Setter
	public static class MenuText {
		/**
		 * <pre>
		 *   是否必须：是
		 *   说明：文本内容，支持\n（\和n两个字符）换行。不少于1字节 不多于256字节
		 * </pre>
		 */
		private String content;
	}
}
